home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #2
/
Monster Media No. 2 (Monster Media)(1994).ISO
/
prog_c
/
lzw4w10.zip
/
LZW4W.DOC
< prev
next >
Wrap
Text File
|
1994-07-12
|
37KB
|
961 lines
LZW Data Compression Library
For Windows (C/C++)
(LZW4W)
USERS MANUAL
Version 1.0
July 11, 1994
This software is provided as-is.
There are no warranties, expressed or implied.
Copyright (C) 1994
All rights reserved
MarshallSoft Computing, Inc.
Post Office Box 4543
Huntsville AL 35815
205-881-4630 Voice / FAX
205-880-9748 Support BBS
_______
____|__ | (R)
--| | |-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
-----| | |---------------------
|___|___| MEMBER
LZW4W Users Manual Page 1
C O N T E N T S
Chapter Page
1.0 Introduction..............................................3
1.1 Distribution Files....................................3
1.2 Compiling the Library.................................4
1.3 User Support..........................................4
1.4 ASP Ombudsman.........................................5
1.5 Installation..........................................5
2.0 The LZW Algorithm.........................................6
2.1 LZW Compression.......................................6
2.2 LZW Expansion.........................................7
2.3 LZW Implementation....................................7
3.0 Example Programs..........................................8
3.1 RUNLZW................................................8
3.2 ARCHIVE...............................................9
4.0 Reader & Writer Functions................................10
5.0 Library Functions........................................11
5.1 InitLZW..............................................11
5.2 TermLZW..............................................11
5.3 Compress.............................................12
5.4 Expand...............................................12
6.0 Error Codes..............................................13
6.1 EXPANSION_ERROR......................................13
6.2 CANNOT_ALLOCATE......................................13
6.3 INTERNAL_ERROR.......................................13
6.4 NOT_READY............................................13
6.5 BAD_BITCODE..........................................13
7.0 Legal Issues.............................................14
7.1 Registration.........................................14
7.2 Referral Plan........................................14
7.3 License..............................................15
7.4 Warranty.............................................15
8.0 Revision History.........................................16
9.0 Other MarshallSoft Computing Products for Windows........16
9.1 The Personal Communications Library for Windows......16
LZW4W Users Manual Page 2
1.0 Introduction
LZW4W consists of a variable code size implementation of the LZW
(Lempel-Ziv-Welch) algorithm for compressing and decompressing
data. LZW does particularly well on text files, achieving better
than a 50 % compression ratio for many files.
The LZW algorithm is considered to be one of the best general
purpose algorithms available today. The new high speed modems
that employ on-the-fly data compression (such as MNP 5.0 & the
V.42 bis international standard) use the LZW algorithm, as well as
such well known utility programs such as PKZIP.
The LZW4W library is designed to be used in a wide variety of
situations. Some of the possible uses include:
1) Compression and expanding files on disk.
2) Compressing files "on the fly" before sending over a modem,
and then expanding on the receiving end.
3) Compression of data files used by your application program such
as help files, graphics screens, etc. The compressed data files
are then expanded as they are loaded by the application.
1.1 Distribution Files
The distribution files are as follows:
1) LZW4W.LIB -- Windows library.
2) LZW4W.DOC -- This documentation file.
3) LZW4W.INV -- Invoice file.
4) RUNLZW.C -- Compress/Expand Windows example program.
5) ARCHIVE.C -- File archiving Windows example program.
6) LZW4W.H -- Library prototypes.
7) *._B_ -- Borland C makefiles.
8) *._M_ -- Microsoft C makefiles.
9) RW_IO.C -- Reader/Writer I/O source file.
10) RW_IO.H -- Prototypes for above.
11) DIR_IO.C -- Directory I/O source file.
12) DIR_IO.H -- Prototypes for above.
13) SAYERROR.C -- Displays text error messages.
14) SAYERROR.H -- Prototypes for above.
15) DATABOX.C -- Dialog box which request text from user.
16) DATABOX.H -- Prototypes for above.
17) DISPLAY.C -- Handles window text display.
18) DISPLAY.H -- Prototypes for above.
19) ABOUT.C -- ABOUT dialog box.
20) ABOUT.H -- Prototypes for above.
Registered users also receive:
1) LZW4W.ASM -- SOURCE CODE for the LZW4W libraries.
2) LZW4W.MAK -- Makefile to make LZW4W.LIB
LZW4W Users Manual Page 3
1.2 Compiling the Library
The example windows programs can be compiled using the provided
makefiles. To compile the example programs using Microsoft C,
type (use NMAKE rather than MAKE):
NMAKE ARCHIVE._M_
NMAKE RUNLZW._M_
To compile the example programs using Borland C, type:
MAKE -fARCHIVE._B_
MAKE -fRUNLZW._B_
The registered user can re-compile the source code (source code is
provided in the registered version only) for the library using the
provided makefile LZW4W.MAK, or the library can be compiled
directly by:
masm -Mx lzw4wlib.asm,lzw4wlib.obj;
del lzw4w.lib
lib lzw4w.lib+lzw4wlib.obj,lzw4w.map
1.3 User Support
We want you to be successful in developing your application using
our libraries! We depend on our customers to let us know what they
need in a library. This means we are committed to providing the
best libraries that we can. If you have any suggestions or
comments, please write to us or give us a call.
If you are having a problem using LZW4W or any of our libraries,
call (205) 881-4630 between 1:30 PM and 9:30 PM CST Monday through
Saturday can call at other times and leave a message, and call
back later during our regular business hours for a reply. You can
also FAX us at this same number at any time.
You may also call our 24 hour BBS (2400 baud, no parity, 8 data
bits, 1 stop bit) at any time. The BBS will contain the latest
shareware version of LZW4W, messages, and other related files. All
files are in standard ZIP format. You can leave a message on the
BBS, and we will usually have a reply ready for you within 24
hours. The dedicated telephone number is 205-880-9748. Set your
modem for 1200 to 9600 baud, 8 data bits, no parity, one stop bit.
The MarshallSoft Computing, Inc. newsletter "Comm Talk" is
published quarterly. It discusses various communications problems
and solutions using PCL4C (the communications library) as well as
related information such as data compression issues. Registered
users receive a one year complimentary subscription when first
registering and for each update purchased. However, overseas
customers who want the newsletter must pay $5 for postage.
Additional one year subscriptions are $15 (plus $5 for postage for
overseas customers).
LZW4W Users Manual Page 4
1.4 ASP Ombudsman
MarshallSoft Computing, Inc. is a member of the Association of
Shareware Professionals (ASP). ASP wants to make sure that the
shareware principle works for you. If you are unable to resolve a
shareware-related problem with an ASP member by contacting the
member directly, ASP may be able to help. The ASP Ombudsman can
help you resolve a dispute or problem with an ASP member, but does
not provide technical support for members' products. Please write
to the ASP Ombudsman at 545 Grover Road, Muskegon, MI USA
49442-9427, Fax 616-788-2765, or send a CompuServe message via
CompuServe Mail to ASP Ombudsman 70007,3536.
1.5 Installation
(1) The Microsoft C and Borland C Windows compilers are supported.
Before installation of LZW4W, your C compiler should already be
installed on your system and tested. If you are not familiar with
makefiles, refer to your compiler manual. If you are using the
interactive environment for, be sure to compile with the provided
makefiles first to verify your installation.
(2) Make a backup copy of your distribution disk. Put your
original distribution disk in a safe place.
(3) Create a work directory on your work disk (normally your
harddisk). For example, to create a work directory named LZW4W, we
first log onto the work disk and then type:
MKDIR LZW4W
(4) Copy all the files from your backup copy of the distribution
disk to your work directory. For example, to copy from the A:
drive to your work directory, we type:
CD LZW4W
COPY A:*.*
(5) Compile RUNLZW.C and ARCHIVE.C. For example, to make
ARCHIVE.EXE:
a) Borland Turbo C: Type
MAKE -fARCHIVE._B_
b) Microsoft C: Type
NMAKE COMPRESS._M_
Note the use of NMAKE rather than MAKE above.
LZW4W Users Manual Page 5
2.0 The LZW Algorithm
The following discussion of the LZW algorithm is meant to provide
a high level overview of LZW. For those interested in a more
detailed explanation, several good books are available on data
compression. Most of them contain a section on generic LZW
compression.
The original public research papers on what is now called LZW
compression are:
J. ZIV and A. Lempel,
"A Universal Algorithm for Sequential Data Compression",
IEEE Transactions on Information Theory, May 1977.
Terry Welch,
"A Technique for High-Performance Data Compression",
Computer, June 1984.
Many subsequent papers have been published dealing with the LZW
compression algorithm.
2.1 LZW Compression
The LZW compressor reads 8-bit bytes from a data source and
outputs N-bit codes each of which identifies a previously defined
string. The value of N starts at 9. Thus, codes 0 through 255
(0xff) correspond with the standard character set, while codes 256
(0x100) through 511 (0x1ff) correspond to a byte-byte pair or a
code-byte pair in the code table. After code 511 is output, 10 bit
codes are used. This is repeated until the maximum number of bits
per code is reached. LZW4W can use a maximum value of 12, 13 or 14
bits per code. The recommended value is 14.
The LZW compressor builds a code table as it compresses data. The
code table consists of previously encountered strings.
The basic LZW compression algorithm is as follows:
STRING = get first input byte
while there is more input data
{BYTE = get next input byte
if STRING+BYTE is in code table
STRING=STRING+BYTE
else
{output code for STRING
add STRING+BYTE to code table
STRING = BYTE
}
}
output the code for STRING
LZW4W Users Manual Page 6
2.2 LZW Expansion
The LZW expansion routine reads the N-bit codes previously created
by the LZW compressor and reconstructs the code table (as
previously constructed by the compressor) as it is outputing 8-bit
bytes. A code corresponds to a single byte (the first 256 codes
from 0x00 through 0xff), or a byte-byte pair in the code table, or
a code-byte pair in the code table. In the later case, the code
part of the code-byte pair refers to another defined code pair in
the table. As each code is read in, it is located in the code
table and the corresponding 8-bit bytes are output. This means
that codes must be defined before they are needed for expansion.
Unlike older dictionary based compression schemes, the code
dictionary produced by the compressor routine does not have to be
provided to the expansion routine.
The basic LZW de-compression algorithm is as follows:
OLDCODE = input first code
output OLDCODE
while there is more input data
{NEWCODE = get next input code
STRING = translation of NEWCODE
output STRING
BYTE = 1st byte of STRING
add OLDCODE+BYTE to the code table
OLDCODE = NEWCODE
}
2.3 Implementation
The LZW4W library is written in assembly language. Any Microsoft
or compatible assembler will assemble it. The decision to program
LZW4W in assembler was made in order to get the absolute maximum
performance possible. Although optimized C is very good, it is
still bigger and slower than hand optimized assembler. Also,
assembler generates object files which do not contain references
to the C runtime environment. This results in a library that is
callable from any code created by any Windows capable compiler.
Internal table space varies with the number of code bits used.
Using a maximum of 12 bits per code (see the InitLZW() function),
25105 bytes are allocated for table space. This value jumps to
45145 bytes when using 13 bytes and 90205 bytes when using 14
bits. The best compression is given using 14 bits per code.
LZW4W Users Manual Page 7
3.0 Example Programs
Two example windows programs are provided. Each example program
should be compiled with the provided makefile. These example
programs are meant to demonstrate various ways in which the LZW
compression library can be used.
3.1 RUNLZW
The program RUNLZW is provided as both a standalone LZW
compression / expansion program, and as an example of how to use
the LZW4W library to compress a file.
+----------------------------+
| - | RUNLZW |
+---+------------------------+
| Exit About Compress Expand |
+----------------------------+
| |
| |
| |
| |
| |
| |
| |
+----------------------------+
Choosing "Compress" will pop up a window to ask for the file name
to compress:
+-------------------------+
| Enter file to compress |
| |
| +-------------------+ |
| | ? | |
| +-------------------+ |
| |
| +------+ +--------+ |
| | OK | | CANCEL | |
| +------+ +--------+ |
+-------------------------+
Type in the name of the file that you wish to compress. Type
ENTER or push the OK button when done. If you change your mind,
you can always push the CANCEL button.
Choosing "Expand" works in a manner similiar to COMPRESS, except
that you are prompted for the filename of a file previously
compressed with LZW4W.
Files created with LZW4W are compatible with those created with
LZW4C (DOS/C) and LZW4P (DOS/Pascal).
LZW4W Users Manual Page 8
3.2 ARCHIVE
The program ARCHIVE is used to:
1. Create a (compressed) archive file.
2. Expand an archive file (extract all files).
3. List the files in an archive file.
4. Extract a given file from an archive.
+----------------------------+
| - | ARCHIVE |
+---+------------------------+
| Exit About Archive... |
+----------------------------+
| |
| |
| |
| |
| |
| |
| |
+----------------------------+
Choosing "Archive..." result in the Archive menu being pulled
down:
+----------------------------+
| - | ARCHIVE |
+---+------------------------+
| Exit About Archive... |
+------------+----------+----+
| | Compress | |
| | Expand | |
| | List | |
| | Extract | |
| +----------+ |
| |
| |
+----------------------------+
Choosing "Compress" will result in a popup window to request the
file name of the archive file and the file specification for the
list of files to archive (compress). For example, to archive all
file ending with ".C" into the file CFILES.ARF, respond with
"CFILES.ARF" when asked for the archive filename, and "*.C" when
asked for the files to compress.
The remaining archive entries work in a similiar manner. They all
use the same style of popup window to get information from the
user as described in the above section on RUNLZW.
Files created with LZW4W are compatible with those created with
LZW4C (DOS/C) and LZW4P (DOS/Pascal).
LZW4W Users Manual Page 9
4.0 Reader & Writer Functions
Both the compression and expansion routines in the LZW4W library
use Reader and Writer functions supplied by the library caller.
They are provided as a means of giving the caller complete control
over the source and destination of the data stream during
compression and expansion.
A reader function is not limited to reading from disk. It may read
from any data source as long as it returns a -1 when there is no
more data to be read. Similiarly, a writer function may write to
any data sink.
A simple (excuse the 1 byte buffers!) example of suitable reader
and writer functions which can be used to compress and expand
files on disk are as follows:
int Reader(void)
{int Code;
char Byte;
Code = _lread(ReadHandle,&Byte,1);
if(Code==1) return( Byte );
else return(Code);
}
int Writer(char Byte)
{int Code;
Code = _lwrite(WriteHandle,&Byte,1);
return(Code);
}
The Windows file API functions should be used rather than file I/O
functions in the C runtime library:
_lopen -- To open an existing file.
_lcreat -- To open a new file.
_lclose -- To close a file.
_lread -- To read a buffer.
_lwrite -- To write a buffer.
Alternatively, OpenFile can be use instead of _lopen and _lcreat.
OpenFile -- To open a file (existing or new).
Note that the Reader returns a -1 for an end of data condition.
Data is returned as an integer with the high byte set to 0. Thus,
the only integers can can be returned by the Reader are -1
(0xffff) and 0 (0x0000) to 255 (0x00ff).
If you remove data from a character buffer, be sure to zero out
the high order byte (AND with 0x00ff) unless you are returning a
-1 (EOF). For an example, examine the code for the Reader()
function in RW_IO.C.
LZW4W Users Manual Page 10
5.0 Library Functions
There are four functions in the LZW4W library as follows:
InitLZW -- Initialize LZW library.
TermLZW -- Terminate LZW library.
Compress -- Compress
Expand -- Expand (un-compress)
5.1 InitLZW
Function: Initialize library
Prototype: int InitLZW(int BitCode)
/* BitCode = maximum bits per code */
Description: The InitLZW function is used to initialize the
library.
The argument <BitCode> is the maximum number of bits
used per code in the compression process. Legal
values are 12, 13, and 14 (the preferred value).
Smaller values will use less memory but not compress
as tightly.
Returns: -2 : (CANNOT_ALLOCATE) -- if unable to allocate.
-5 : (BAD_BITCODE) -- BitCode not 12, 13, or 14.
0 : (AOK) -- no error.
Example: /* initialize LZW4W */
InitLZW(14);
5.2 TermLZW
Function: Terminate library
Prototype: int TermLZW(void)
Description: The TermLZW function is used to terminate the
library after all processing is done. It must be
called in order to free the table space allocated by
InitLZW().
Returns: 0 : (AOK) -- no error.
Example: /* terminate LZW4W */
TermLZW();
LZW4W Users Manual Page 11
5.3 Compress
Function: Compresses a data set.
Prototype: int Compress(int (far pascal *Reader)(void),
int (far pascal *Writer)(char))
/* args are pointers to Reader() & Writer() */
Description: The Compress function is used to compress a data
set. The Reader function always returns the next
input byte. The Writer function consumes the next
output byte. Refer to the section on Reader/Writer
I/O.
Returns: -4 : (NOT_READY) -- Didn't call InitLZW() first.
0 : (AOK) -- No error.
Example: /* compress a file */
int FileInp;
int FileOut;
FileInp = FileOpen("LZW4W.DOC",OF_READ);
FileOut = FileOpen("LZW4W.LZW",OF_CREATE);
Compress(Reader,Writer);
5.4 Expand
Function: Expands a file.
Prototype: int Expand(int (far pascal *Reader)(void),
int (far pascal *Writer)(char))
/* args are pointers to Reader() & Writer() */
Description: The Expand function is used to de-compress a file
previously compressed with the Compress function.
The Reader function always returns the next input
byte. The Writer function consumes the next output
byte. Refer to the section on Reader/Writer I/O.
Returns: -1 : (EXPANSION_ERROR) -- File not compressed by
the compress function.
0 : (AOK) -- No error.
Example: /* de-compress a file */
int FileInp;
int FileOut;
FileInp = FileOpen("LZW4W.LZW",OF_READ);
FileOut = FileOpen("LZW4W.DOC",OF_CREATE);
Expand(Reader,Writer);
LZW4W Users Manual Page 12
6.0 Error Codes
Be sure and check the return codes from each LZW4W function call.
There are only 5 error codes returned by the LZW4W library other
than 0 (no error). All error codes are negative numbers. Their
numerical values are in the LZW4W.H file. Each error code is
returned by a library function as follows:
****************************************************************
* Error Name * IntLZW * TermLZW * Compress * Expand *
****************************************************************
* EXPANSION_ERROR * No * No * No * Yes *
* CANNOT_ALLOCATE * Yes * No * No * No *
* INTERNAL_ERROR * Yes * No * No * No *
* NOT_READY * No * No * Yes * Yes *
* BAD_BITCODE * Yes * No * No * No *
****************************************************************
6.1 EXPANSION_ERROR
An EXPANSION_ERROR error is returned only by the Expand() library
function. It is caused by attempting to expand a file that was not
compressed by the Compress() function. Note, however, that
Expand() may expand a file that was not compressed by Compress()
without returning an EXPANSION error.
6.2 CANNOT_ALLOCATE
A CANNOT_ALLOCATE error is returned only by the InitLZW() library
function. It is caused when the Alloc() function passed to
InitLZW() returns a NULL pointer, indicating that it cannot
allocate sufficient memory.
6.3 INTERNAL_ERROR
An INTERNAL_ERROR error is returned only by the InitLZW() library
function and only in the shareware version. It is caused by
modification of the Shareware screen. You should never get this
error.
6.4 NOT_READY
A NOT_READY error is returned by the Compress() and Expand()
library functions. It is caused by calling Compress() or Expand()
without first calling InitLZW().
6.5 BAD_BITCODE
A BAD_BITCODE error is returned from InitLZW() when specifing a
BitCode of other than 12, 13, or 14.
LZW4W Users Manual Page 13
7.0 Legal Issues
7.1 Registration
If you wish to register the LZW4W Library, please send $45 plus $3
S&H ($6 outside of North America) to:
MarshallSoft Computing, Inc.
Post Office Box 4543
Huntsville AL 35815
We accept American Express (account number, expiration date,
exact name on your card, and complete AmEx billing address
required), checks in US dollars drawn on a US bank, purchase
orders (POs) from recognized US schools and companies listed in
Dun & Bradstreet, and COD (street address and phone number
required) within the USA (plus a $3 COD charge). Print the file
PCL4C.INV if an invoice is needed.
You can also order LZW4W from The Public Software Library (PSL)
with your MC, Visa, AmEx, or Discover card by calling 800-242-4PSL
(from overseas: 713-524-6394) or by FAX at 713-524-6398 or by
CompuServe at [71355,470]. THESE NUMBERS ARE FOR ORDERING ONLY.
The product number for LZW4W is 11482.
If you wish to update from an older version of LZW4W, send $15
plus $3 S&H ($6 outside of North America). Updates must be
ordered directly from MarshallSoft Computing.
The registered package includes:
o The LZW4W library without the shareware screen.
o Assembler source code for the library.
o Laser printed Users Manual.
o Telephone / FAX / BBS support for one year.
Print the file LZW4W.INV if an invoice is needed. The registered
user will receive the latest version of LZW4W shipped by two day
priority mail (packet airmail overseas). A 5.25" diskette is
provided unless a 3.5" diskette is requested.
6.2 Referral Program
The registered user will receive a $5 certificate towards any
MarshallSoft Computing product by referring a new customer
(someone who has never registered anything with us) paying full
price ($45). The new customer must identify you at the time the
order is placed. You will be mailed a $5 certificate when the new
registration is paid.
LZW4W Users Manual Page 14
7.2 License
MarshallSoft Computing, Inc. grants the registered user of LZW4W
the right to use the LZW4W library (in object form) in the
development of any software product without any royalties.
However, the source code for the library (LZW4W.ASM) is
copyrighted by MarshallSoft Computing Inc., and may not be
released in whole or in part.
7.3 Warranty
MARSHALLSOFT COMPUTING, INC. DISCLAIMS ALL WARRANTIES RELATING TO
THIS SOFTWARE, WHETHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, AND ALL SUCH WARRANTIES ARE EXPRESSLY
AND SPECIFICALLY DISCLAIMED. NEITHER MARSHALLSOFT COMPUTING, INC.
NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN THE CREATION, PRODUCTION,
OR DELIVERY OF THIS SOFTWARE SHALL BE LIABLE FOR ANY INDIRECT,
CONSEQUENTIAL, OR INCIDENTAL DAMAGES ARISING OUT OF THE USE OR
INABILITY TO USE SUCH SOFTWARE EVEN IF MARSHALLSOFT COMPUTING,
INC. HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR
CLAIMS. IN NO EVENT SHALL MARSHALLSOFT COMPUTING, INC.'S LIABILITY
FOR ANY SUCH DAMAGES EVER EXCEED THE PRICE PAID FOR THE LICENSE TO
USE THE SOFTWARE, REGARDLESS OF THE FORM OF THE CLAIM. THE PERSON
USING THE SOFTWARE BEARS ALL RISK AS TO THE QUALITY AND
PERFORMANCE OF THE SOFTWARE.
Some states do not allow the exclusion of the limit of liability
for consequential or incidental damages, so the above limitation
may not apply to you.
This agreement shall be governed by the laws of the State of
Alabama and shall inure to the benefit of Marshallsoft Computing,
Inc. and any successors, administrators, heirs and assigns. Any
action or proceeding brought by either party against the other
arising out of or related to this agreement shall be brought only
in a STATE or FEDERAL COURT of competent jurisdiction located in
Madison County, Alabama. The parties hereby consent to in personam
jurisdiction of said courts.
LZW4W Users Manual Page 15
8.0 Revision History
Version 1.0 -- July 8, 1994
o Original release. Based on release 1.4 of the equivalent DOS
based products LZW4C and LZW4P.
9.0 Other MarshallSoft Computing Products for Windows
Shareware versions of all MarshallSoft Computing products are
available on our user support BBS at 205-880-9748 (1200 to 9600
baud, 8N1).
9.1 The Personal Communications Library for Windows
The Personal Communications Library for Windows (PCL4W) is an
asynchronous comm library for Windows developers. Supports
COM1-COM4 to 115200 baud, 4 ports concurrently, all memory models,
DigiBoard PC/8, INS16550, interrupt driven, RTS/CTS flow control.
Requires Microsoft C 7.0 or Borland C 3.1 & 4.0. Includes simple
windows terminal emulator program. Distributed by MarshallSoft
Computing, Inc. as SHAREWARE (V1.0, $95). <ASP>
o 36 communications and support functions.
o Supports the high performance INS16550 UART.
o Supports hardware (RTS/CTS) flow control.
o Interrupt driven transmitter (optionally) & receiver.
o Supports 300 baud to 115,200 baud.
o Supports COM1 through COM16.
o Adjustable receive queues from 8 bytes to 32 KB.
o Control-BREAK error exit.
o 17 communications error conditions trapped.
o Support the PC/4 and PC/8 DigiBoards.
o Supports the BB1004, BB1008, and BB2016 BOCA boards.
o Allows 4 - 16 ports to run concurrently.
o Complete modem control & status.
o Written in assembly language for small size & high speed.
o Terminal program featuring XMODEM, YMODEM, & YMODEM-G.
LZW4W Users Manual Page 16